﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Datos;
using System.IO;


namespace Negocio
{
    public class AccesoLogica
    {
        public static DataTable ObtenerConcurso()
        {
            return AccesoDatos.ObtenerConcurso();
        }

        public static DataTable ObtenerArchivo()
        {
            return AccesoDatos.ObtenerArchivo();
        }

        public static DataTable ObtenerTipoTexto()
        {
            return AccesoDatos.ObtenerTipoTexto();
        }

        public static string ObtenerTipoTexto(int TipoTextoId)
        {
            DataTable tabla = AccesoDatos.ObtenerTipoTexto();
            string nombre = tabla.Rows[TipoTextoId][1].ToString();
            return nombre;
        }

        public int Insert(string Nombre, int EdadMinima, int EdadMaxima, string Descripcion, Byte[] ArchivoTexto)
        {
            AccesoDatos acceso = new AccesoDatos();
            return acceso.Insert(Nombre, EdadMinima, EdadMaxima, Descripcion, ArchivoTexto);
        }

        public int Delete(int ConcursoId)
        {
            AccesoDatos acceso = new AccesoDatos();
            return acceso.Borrar(ConcursoId);
        }

        public int DeleteArchivo(int ArchivoTextoId)
        {
            AccesoDatos acceso = new AccesoDatos();
            return acceso.BorrarArchivo(ArchivoTextoId);
        }

        public int Update(int ConcursoId,string Nombre, int EdadMinima, int EdadMaxima, string Descripcion, Byte[] ArchivoTexto)
        {
            AccesoDatos acceso = new AccesoDatos();
            return acceso.Modificar(ConcursoId,Nombre,EdadMinima,EdadMaxima, Descripcion, ArchivoTexto);
        }

        public static int ObtenerId(int Fila)
        {
            DataTable tabla=AccesoDatos.ObtenerConcurso();
            int id = Convert.ToInt32(tabla.Rows[Fila][0]);
            return id;
        }

        public static string ObtenerNombre(int Fila)
        {
            DataTable tabla = AccesoDatos.ObtenerConcurso();
            string nombre = tabla.Rows[Fila][1].ToString();
            return nombre;
        }

        public static int ObtenerEdadMin(int Fila)
        {
            DataTable tabla = AccesoDatos.ObtenerConcurso();
            int edadmin = Convert.ToInt32(tabla.Rows[Fila][2]);
            return edadmin;
        }

        public static int ObtenerEdadMax(int Fila)
        {
            DataTable tabla = AccesoDatos.ObtenerConcurso();
            int edadmax = Convert.ToInt32(tabla.Rows[Fila][3]);
            return edadmax;
        }

        public static string ObtenerDescripcion(int Fila)
        {
            DataTable tabla = AccesoDatos.ObtenerConcurso();
            string descripcion = tabla.Rows[Fila][4].ToString();
            return descripcion;
        }

        public static Boolean insertarPDF(string pdfnombre, string pdfruta)
        {
            FileStream fs = new FileStream(pdfruta, FileMode.Open, FileAccess.Read);
            BinaryReader br = new BinaryReader(fs);
            Byte[] bytes = br.ReadBytes((Int32)fs.Length);
            br.Close();
            fs.Close();
            return AccesoDatos.insertPDF(pdfnombre, bytes);
        }

        public static DataTable descargarPDF(int id)
        {
            return AccesoDatos.selectPDF(id);
        }

        public int InsertArchivoTexto(string Titulo, int TipoTextoId, string Nombre, string Tipo, Byte[] Datos,
            int UsuarioId, string Descripcion, int EdadDesde, int EdadHasta, bool Anonimo, bool Contacto)
        {
            AccesoDatos acceso = new AccesoDatos();
            return acceso.InsertArchivoTexto(Titulo,TipoTextoId,Nombre,Tipo,Datos,
            UsuarioId,Descripcion,EdadDesde,EdadHasta,Anonimo,Contacto);
        }

        public int UpdateArchivoTexto(int ArchivoTextoId, string Titulo, int TipoTextoId, string Nombre, string Tipo, Byte[] Datos,
            int UsuarioId, string Descripcion, int EdadDesde, int EdadHasta, bool Anonimo, bool Contacto)
        {
            AccesoDatos acceso = new AccesoDatos();
            return acceso.UpdateArchivoTexto(ArchivoTextoId, Titulo, TipoTextoId, Nombre, Tipo, Datos,
            UsuarioId, Descripcion, EdadDesde, EdadHasta, Anonimo, Contacto);
        }

        public int UpdateArchivoTexto2(int ArchivoTextoId, string Titulo, int TipoTextoId, 
            int UsuarioId, string Descripcion, int EdadDesde, int EdadHasta, bool Anonimo, bool Contacto)
        {
            AccesoDatos acceso = new AccesoDatos();
            return acceso.UpdateArchivoTexto2(ArchivoTextoId, Titulo, TipoTextoId, 
            UsuarioId, Descripcion, EdadDesde, EdadHasta, Anonimo, Contacto);
        }

        public static Byte[] convertirPDF(string Nombre, string pdfruta)
        {
            FileStream fs = new FileStream(pdfruta, FileMode.Open, FileAccess.Read);
            BinaryReader br = new BinaryReader(fs);
            Byte[] bytes = br.ReadBytes((Int32)fs.Length);
            br.Close();
            fs.Close();
            return bytes;
        }

        public static string ObtenerString(int Fila,int Columna)
        {
            DataTable tabla = AccesoDatos.ObtenerArchivo();
            string nombre = tabla.Rows[Fila][Columna].ToString();
            return nombre;
        }

        public static int ObtenerInt(int Fila,int Columna)
        {
            DataTable tabla = AccesoDatos.ObtenerArchivo();
            int edadmin = Convert.ToInt32(tabla.Rows[Fila][Columna]);
            return edadmin;
        }

        public static bool ObtenerBool(int Fila, int Columna)
        {
            DataTable tabla = AccesoDatos.ObtenerArchivo();
            bool edadmin = Convert.ToBoolean(tabla.Rows[Fila][Columna]);
            return edadmin;
        }

    }
}
